{$CLEO .qa}
{$USE CLEO+}
{$USE newOpcodes}
{$USE ini}

0000: NOP

script_name "Chnsaw"

// By ArtemQa146

const
    Render_S = 31@
    Render_R = 30@
    Render_R2 = 29@
    Render_R3 = 28@
    Step = 27@
    Render_p = 26@
    Render_p2 = 25@
    Render_p3 = 24@
    progress = 23@
    Weapon_ID = 9
end

0085: Render_S = 0@ // (int)
0085: Render_R = 1@ // (int)
0085: Render_R2 = 2@ // (int)
0085: Render_R3 = 3@ // (int)
0085: Render_P = 4@ // (int)
0085: Render_P2 = 5@ // (int)
0085: Step = 6@ // (int)

        gosub @Visible_Weapon
        progress = 1
        0E31: set_render_object_visible Render_P 1
        set_script_event_char_damage 1 label @Damage var_char 0@

            repeat
            wait 0
            if and
                not actor.Driving($PLAYER_ACTOR)
                02D8:   actor $PLAYER_ACTOR current_weapon == Weapon_ID
            then
                0A8D: 1@ = read_memory 0xB7CDD0 size 4 virtual_protect 0
                08C3: clear 1@ bit 12
                0A8C: write_memory 0xB7CDD0 size 4 value 1@ virtual_protect 0
                
                if or
                    Actor.Animation($PLAYER_ACTOR) == "CSAW_1"
                    Actor.Animation($PLAYER_ACTOR) == "CSAW_2"
                    Actor.Animation($PLAYER_ACTOR) == "CSAW_3"
                    Actor.Animation($PLAYER_ACTOR) == "CSAW_part"
                then
                if
                    timerb > 25
                then
                    
                    if
                        progress == 1
                    then
                        0E31: set_render_object_visible Render_P 1
                        0E31: set_render_object_visible Render_P2 0
                    end
                    if
                        progress == 2
                    then
                        0E31: set_render_object_visible Render_P 0
                        0E31: set_render_object_visible Render_P2 1
                    end

                    progress += 1
                    if progress > 2
                    then progress = 1
                    end
                    timerb = 0
                end
                end


                if
                    Step < 2
                then
                    0E31: set_render_object_visible Render_R 1
                    0E31: set_render_object_visible Render_R2 0
                    0E31: set_render_object_visible Render_R3 0
                end
                
                if and
                    Step >= 2
                    Step <= 20
                then
                    if
                        TIMERA > 20000
                    then
                        0006: TIMERA = 0
                        Step = 0
                    else
                        0E31: set_render_object_visible Render_R 0
                        0E31: set_render_object_visible Render_R2 1
                        0E31: set_render_object_visible Render_R3 0
                    end
                end
                
                if
                    Step > 20
                then
                    if
                        TIMERA > 20000
                    then
                        0006: TIMERA = 0
                        Step = 2
                    else
                        0E31: set_render_object_visible Render_R 0
                        0E31: set_render_object_visible Render_R2 0
                        0E31: set_render_object_visible Render_R3 1
                    end
                end

            else
                break
            end
            until not player.Defined(0)
                0A8D: 1@ = read_memory 0xB7CDD0 size 4 virtual_protect 0
                08BD: set 1@ bit 12
                0A8C: write_memory 0xB7CDD0 size 4 value 1@ virtual_protect 0
                set_script_event_char_damage 0 label @Damage var_char 0@
            gosub @Hide_Weapon

0A93: terminate_this_custom_script


:Damage
get_char_damage_last_frame 0@ damager 2@ type 3@ part 4@ intensity 5@   // type = gun int, part = bone char int, intensity = damage float
get_ped_pointer 4@ = ped $PLAYER_ACTOR
if and
    003B:   4@ == 2@  // player damager
    3@ == Weapon_ID // chnsaw
then
    Step += 1
    TIMERA = 0
end
return_script_event


:Hide_Weapon
0E31: set_render_object_visible Render_S 0
0E31: set_render_object_visible Render_R 0
0E31: set_render_object_visible Render_R2 0
0E31: set_render_object_visible Render_R3 0
0E31: set_render_object_visible Render_p 0
0E31: set_render_object_visible Render_p2 0
return

:Visible_Weapon
0E31: set_render_object_visible Render_S 1
0E31: set_render_object_visible Render_R 0
0E31: set_render_object_visible Render_R2 0
0E31: set_render_object_visible Render_R3 0
0E31: set_render_object_visible Render_p 0
0E31: set_render_object_visible Render_p2 0
return